
local t = Def.ActorFrame{
-- banner title
	Def.ActorFrame{
	-- song or course banner
		Def.Sprite{
			InitCommand=cmd(Center);
			OnCommand=function(self)
				if not GAMESTATE:IsCourseMode() then
					local song = GAMESTATE:GetCurrentSong();
					local path;
					local BannerPath = song:GetBannerPath();
					local JacketPath = song:GetJacketPath();
					if song then
						if BannerPath and JacketPath then
							self:Load( JacketPath );
						end;
					end;
				else
					self:visible(false);
				end;
				self:diffusealpha(0);
				self:zoomtowidth(384);
				self:zoomtoheight(110);
				self:x(SCREEN_CENTER_X);
				self:y(SCREEN_CENTER_Y+10);
				self:sleep(2);
				self:zoomtowidth(300);
				self:linear(0.15);
				self:y(SCREEN_CENTER_Y-60);
				self:diffusealpha(1);
				self:zoomtoheight(300);
				self:sleep(0.7);
				self:zoomtoheight(4);
				self:linear(0.1);
				self:zoomtowidth(SCREEN_WIDTH*2);
				self:zoomtoheight(SCREEN_HEIGHT*1.5);
				self:diffusealpha(0);
			end;
		};

		Def.Sprite{
			InitCommand=cmd(Center);
			OnCommand=function(self)
				if not GAMESTATE:IsCourseMode() then
					local song = GAMESTATE:GetCurrentSong();
					local path;
					local BannerPath = song:GetBannerPath();
					local JacketPath = song:GetJacketPath();
					if song then
						if BannerPath and JacketPath then
							self:visible(true);
							self:Load( BannerPath );
						end;
					end;
				else
					self:visible(false);
				end;
				self:x(SCREEN_RIGHT-210);
				self:y(SCREEN_CENTER_Y+60);
				self:diffusealpha(0);
				self:zoomtowidth(SCREEN_WIDTH*2);
				self:zoomtoheight(4);
				self:sleep(0.3);
				self:diffusealpha(1);
				self:accelerate(0.3);
				self:zoomtowidth(384);
				self:accelerate(0.2);
				self:zoomtoheight(110);
				self:sleep(1.2);
				self:linear(0.075);
				self:x(SCREEN_CENTER_X);
				self:zoomtowidth(300);
				self:linear(0.15);
				self:zoomtoheight(300);
				self:y(SCREEN_CENTER_Y+10);
				self:diffusealpha(0);
			end;
		};
	};
};

return t;